// Blends
// Changelog 05.01.24

// Self include
#include "noise.h"

#define MINX	-10000
#define MINY	MINX
#define MINZ	MINX


// Spline curve
inline double SplineCurve(const double& a){
	return a*a*(3.0-2.0*a);
}


/*!
\class Turbulence noise.h
\brief This class implements a gradient-turbulence from a modified 
white noise function. A turbulence field is characterized by its pulsation,
wavelength and number of octaves. 
*/


/*!
\brief Creates a turbulence field.
\param omega pulsation
\param lambda wavelength 
\param octaves number of octaves
*/
Turbulence::Turbulence(const double& omega,const double& lambda,int octaves){
	Turbulence::omega=omega;
	Turbulence::lambda=lambda;
	Turbulence::octaves=octaves;
}

/*!
\brief Computes a turbulence scalar value at a given point in space.
Basically sums a series of scaled noise functions.
*/
double Turbulence::Index(const Vector& p) const{  
	double value=Noise::Index(p);
	double l=lambda;
	double o=omega;

	for (int i=2; i<=octaves; ++i){
		if (value>1.0) value+=o*Noise::Index(l*p);
		else { 
			value+=(value)*o*Noise::Index(l*p); }
			l *= lambda;
			o *= omega;
	}
	return value;
}


/*!
\class Noise noise.h
\brief This class implements a vector version of the 
Perlin-style Noise function.
*/

/*! 
\brief Vector version of Perlin-style Noise function.
*/
double Noise::Index(const Vector& p) const{
	double *mp;
	long ix, iy, iz, jx, jy, jz;
	int ixiy_hash, ixjy_hash, jxiy_hash, jxjy_hash;

	double sx, sy, sz, tx, ty, tz;
	double sum;

	double x_ix, x_jx, y_iy, y_jy, z_iz, z_jz, txty, sxty, txsy, sxsy;

	Vector u =p-Vector(MINX,MINY,MINZ);

	ix=long(u[0]); iy=long(u[1]); iz=long(u[2]);
	jx=ix+1; jy=iy+1; jz=iz+1;

	sx=SplineCurve(u[0]-ix); 
	sy=SplineCurve(u[1]-iy); 
	sz=SplineCurve(u[2]-iz);

	// The complement values
	tx=1.0-sx; ty=1.0-sy; tz=1.0-sz;

	// Interpolate

	x_ix=u[0]-ix;
	x_jx=u[0]-jx;
	y_iy=u[1]-iy;
	y_jy=u[1]-jy;
	z_iz=u[2]-iz;
	z_jz=u[2]-jz;
	txty=tx*ty;
	sxty=sx*ty;
	txsy=tx*sy;
	sxsy=sx*sy;
	ixiy_hash=Hash2d ( ix, iy );
	jxiy_hash=Hash2d ( jx, iy );
	ixjy_hash=Hash2d ( ix, jy );
	jxjy_hash=Hash2d ( jx, jy );

	mp=&RTable[(int) Hash1d(ixiy_hash, iz ) & 0xFF];
	sum=IncrSumP(mp,(txty*tz), x_ix, y_iy, z_iz);

	mp=&RTable[(int) Hash1d( jxiy_hash, iz ) & 0xFF];
	sum+=IncrSumP(mp,(sxty*tz), x_jx, y_iy, z_iz);

	mp=&RTable[(int) Hash1d( ixjy_hash, iz ) & 0xFF];
	sum+=IncrSumP(mp,(txsy*tz), x_ix, y_jy, z_iz);

	mp=&RTable[(int) Hash1d( jxjy_hash, iz ) & 0xFF];
	sum+=IncrSumP(mp,(sxsy*tz), x_jx, y_jy, z_iz);

	mp=&RTable[(int) Hash1d( ixiy_hash, jz ) & 0xFF];
	sum+=IncrSumP(mp,(txty*sz), x_ix, y_iy, z_jz);

	mp=&RTable[(int) Hash1d( jxiy_hash, jz ) & 0xFF];
	sum+=IncrSumP(mp,(sxty*sz), x_jx, y_iy, z_jz);

	mp=&RTable[(int) Hash1d( ixjy_hash, jz ) & 0xFF];
	sum+=IncrSumP(mp,(txsy*sz), x_ix, y_jy, z_jz);

	mp=&RTable[(int) Hash1d( jxjy_hash, jz ) & 0xFF];
	sum+=IncrSumP(mp,(sxsy*sz), x_jx, y_jy, z_jz);

	// Range at -0.5, 0.5
	sum=sum+0.5;
	
	return sum;
}


// Random double table
double Noise::RTable[267] ={
	-1.00000000, -0.20842298, -0.33253986, 0.85937285, 0.54222934, 
	0.15385672, -0.76647593, 0.04963760, -0.58214694, -0.15159838, 
	-0.97091630, 0.13273823, 0.10878157, 0.98306249, -0.82561990, 
	0.08451972, 0.29262226, 0.38899825, -0.19826047, -0.16826123, 
	-0.92388800, -0.21513695, 0.21077287, -0.05116350, 0.06187533, 
	-0.46584268, 0.93615625, 0.05696193, -0.77865263, 0.51812009, 
	0.00654612, -0.41368734, 0.37071794, -0.68868544, -0.73626307, 
	0.45070573, 0.92651255, 0.18864729, 0.95700008, -0.33119707, 
	0.20088502, 0.28050660, 0.91012436, 0.85323873, -0.91448844, 
	0.63427176, 0.82409400, 0.15828183, -0.81338216, -0.56411078, 
	0.65893034, -0.72549020, -0.18861677, -0.75692378, -0.81829557, 
	-0.92129397, 0.09660487, 0.82101167, -0.35664912, -0.55715267, 
	-0.86822309, 0.73696498, 0.71108568, 0.52996109, -0.50405127, 
	-0.70312047, 0.68563363, 0.27141222, 0.63945983, 0.90957504, 
	-0.42446021, 0.66643778, -0.94885176, -0.57448692, -0.18559548, 
	-0.06218051, -0.91879149, 0.62423133, 0.29298848, -0.22392615, 
	-0.17439536, 0.90356298, -0.34386206, -0.22883955, -0.96566720, 
	-0.58593118, -0.77206073, -0.61977569, 0.96026551, 0.69732204, 
	-0.74059663, 0.10362402, -0.80175479, -0.01307698, -0.21602197, 
	0.11741817, 0.81228351, -0.00016785, 0.56105898, 0.60625620, 
	-0.71642634, -0.81127642, 0.65017166, 0.18620584, 0.18556497, 
	-0.55068284, 0.86739910, -0.86053254, 0.80743114, 0.85510033, 
	0.95339895, -0.35350576, -0.02909895, 0.02284276, -0.80428779, 
	0.61715114, 0.26765850, -0.64657053, 0.56801709, 0.36653696, 
	0.75603876, -0.90078584, -0.63820859, -0.25123980, -0.66311131, 
	-0.77904936, -0.59526970, 0.08094911, 0.62014191, 0.41963836, 
	0.42214084, 0.18602274, -0.43913939, -0.63167773, -0.60384527, 
	0.95944152, -0.48580148, -0.67663081, -0.21568627, 0.02796979, 
	0.70031281, 0.49947356, -0.45882353, 0.44542611, 0.17592126, 
	0.19826047, 0.30077058, -0.32961013, 0.93917754, -0.05714504, 
	0.81258869, 0.51506828, 0.20646983, -0.36418708, -0.25053788, 
	-0.10063325, -0.58178073, -0.64834058, 0.90133516, 0.29488060, 
	0.95037766, 0.71206226, -0.22121004, 0.15767147, 0.53090715, 
	0.18132296, 0.89642176, -0.14033722, 0.15959411, 0.23149462, 
	0.28932631, -0.57210651, 0.10270848, -0.11650263, 0.25499351, 
	0.53496605, -0.16499580, 0.27983520, -0.42745098, -0.77712673, 
	0.38466468, -0.15904479, -0.77114519, -0.02366674, 0.07350271, 
	-0.22246128, 0.86218051, -0.98196384, 0.90875105, -0.25435264, 
	-0.75735103, -0.65334554, -0.06297398, 0.41945525, 0.87460136, 
	-0.12883192, -0.31371023, -0.92864881, -0.26900130, 0.03984131, 
	0.40834668, 0.71123827, 0.06349279, -0.45879301, -0.47508965, 
	-0.71963073, -0.93856718, -0.77764553, -0.93920806, 0.70385290, 
	0.32457465, 0.11543450, -0.00737011, -0.38353552, 0.01423667, 
	0.48134585, -0.06782635, -0.48516060, -0.01966888, 0.77755398, 
	-0.17186236, -0.24446479, 0.52175174, -0.82830549, 0.84615854, 
	0.92764172, -0.85241474, 0.65362020, 0.07048142, -0.52715343, 
	-0.25810636, 0.55996033, -0.60711070, -0.44127565, 0.47820249, 
	0.59758907, -0.30675212, -0.02595560, -0.50872053, -0.87096971, 
	-0.11873045, 0.82702373, 0.22447547, -0.11030747, 0.48656443, 
	0.51186389, 0.62401770, 0.04481575, 0.46166171, -0.14518959, 
	0.09571984, -0.27815671, 0.27949950, 0.35982300, -0.79430838, 
	-0.21330587, -0.25462730, -0.40416571, -0.70513466, -0.63884947, 
	0.04850843, -0.57515831, 0.31209277, 0.37438010, -0.06276036, 
	-0.13600366, -0.75707637
};

// Hash table
short Noise::hashTable[4096] =
{
	0xd68, 0xecd, 0xaf0, 0x2c3, 0x6f3, 0x673, 0x4e7, 0x0f7, 
	0x17e, 0x589, 0x87f, 0x569, 0xf38, 0xd36, 0x019, 0xc0d, 
	0xc11, 0xc72, 0x64b, 0x7ae, 0x10c, 0xdfe, 0xe9b, 0x56b, 
	0xe06, 0x82c, 0x86d, 0x2d0, 0xa0e, 0xfc0, 0x424, 0x245, 
	0xe48, 0x524, 0x9e6, 0xf52, 0xe30, 0x3ef, 0x04c, 0xd77, 
	0xc26, 0x88c, 0x038, 0x173, 0x316, 0x617, 0x480, 0x02a, 
	0xc01, 0x37d, 0xcce, 0x82f, 0x090, 0x0bb, 0xdd4, 0x292, 
	0x2b7, 0x635, 0x496, 0x7cb, 0x550, 0xe61, 0xc33, 0x3ce, 
	0xbc8, 0x5c9, 0xa00, 0x12b, 0xb13, 0x449, 0x1f8, 0xb9f, 
	0x936, 0x160, 0xee0, 0x60a, 0xe6f, 0xec4, 0x00a, 0xf8e, 
	0xe89, 0x1b7, 0x681, 0x713, 0xab8, 0xf09, 0x5c3, 0x9c3, 
	0xbdd, 0xf43, 0x7c5, 0x012, 0xc21, 0x27d, 0x9dd, 0x02f, 
	0x3e7, 0x4b8, 0x193, 0xae2, 0xc10, 0x419, 0xced, 0x7a4, 
	0x746, 0xed4, 0xbbf, 0x4f1, 0x40d, 0xeae, 0x591, 0x80d, 
	0x847, 0xed5, 0xd86, 0xdb3, 0x023, 0x2c1, 0xb8f, 0x131, 
	0xee5, 0xed8, 0x80f, 0xb1e, 0x02b, 0x4a9, 0x8cf, 0x8f7, 
	0x659, 0xa4a, 0x782, 0xeaf, 0x8e6, 0x186, 0x09d, 0x603, 
	0x283, 0x508, 0x46e, 0x21a, 0x5d1, 0xf94, 0x8a2, 0xe70, 
	0xac6, 0xeab, 0xa4b, 0x082, 0x79d, 0x7cf, 0xcf1, 0x3e0, 
	0x85e, 0x048, 0x520, 0xbf4, 0x953, 0xb4a, 0x3e1, 0x943, 
	0xb79, 0x621, 0x71f, 0x077, 0xd3a, 0xff5, 0x081, 0x773, 
	0x53c, 0x891, 0x9ce, 0xee3, 0x8fd, 0xe46, 0x041, 0xe3e, 
	0x9ee, 0x7be, 0xae7, 0x096, 0xfed, 0x82e, 0x137, 0xd3f, 
	0x915, 0xaf5, 0x775, 0x2bb, 0x963, 0x650, 0xb76, 0x288, 
	0xffc, 0x4fd, 0x0e3, 0x2e6, 0x6b8, 0xc64, 0xa68, 0x4de, 
	0x795, 0xcf3, 0xe60, 0x3cc, 0x4d4, 0x880, 0xa93, 0x42f, 
	0xcd6, 0xd16, 0xb56, 0x896, 0x7d0, 0x71c, 0xa90, 0xc16, 
	0x37c, 0x9cf, 0x9db, 0xc24, 0x386, 0x7b6, 0x8d2, 0xf61, 
	0x120, 0x0ad, 0x2be, 0x279, 0xecb, 0x4f3, 0x56c, 0x303, 
	0xdba, 0x31a, 0x481, 0x304, 0x284, 0x4e2, 0xe4a, 0xe79, 
	0xac9, 0xa8b, 0x9d8, 0x48a, 0x8b7, 0x09a, 0x39d, 0x46f, 
	0xa95, 0x030, 0xc6b, 0xc2e, 0xd57, 0x514, 0x405, 0xd50, 
	0xf6d, 0x602, 0xc47, 0x607, 0x5be, 0x4c6, 0xbdf, 0xb87, 
	0xe01, 0x4bf, 0x806, 0x0d0, 0xb74, 0x7e0, 0xc6e, 0x434, 
	0xd3b, 0x8cb, 0x970, 0x21f, 0xf2b, 0x5f0, 0x8bd, 0x836, 
	0x8ac, 0xf99, 0x046, 0xb57, 0x201, 0xe57, 0x6bb, 0x48c, 
	0x647, 0xead, 0x87d, 0x01e, 0xeea, 0x2b2, 0x166, 0x42c, 
	0x6b9, 0x4fb, 0x69b, 0xc23, 0x0e1, 0x1ce, 0x285, 0xcd0, 
	0x9cc, 0x5b1, 0xb70, 0x028, 0x3ff, 0xad2, 0x2cf, 0xc85, 
	0x0b4, 0xd21, 0x32d, 0xf6c, 0x124, 0x7e7, 0x273, 0x9e3, 
	0xb97, 0xb77, 0xd97, 0xf3f, 0xfd9, 0xde3, 0x6f6, 0x9c5, 
	0x554, 0x1af, 0x7fd, 0xaf7, 0xd37, 0xfcd, 0xc88, 0x39f, 
	0xa66, 0x932, 0x739, 0x0ff, 0xec9, 0xb04, 0xc8c, 0xf6a, 
	0x103, 0xe8a, 0x7a2, 0xca5, 0x03e, 0xbec, 0x3da, 0xa33, 
	0xdb2, 0x668, 0x49c, 0x800, 0x3fd, 0xdc3, 0xf89, 0x72d, 
	0x62e, 0x6be, 0xeeb, 0x9b3, 0x251, 0xc13, 0x9fc, 0xbc2, 
	0x99c, 0xea9, 0xd1b, 0xa91, 0xc98, 0x0e7, 0x96c, 0xbc0, 
	0xddc, 0x5f9, 0x18e, 0x72f, 0x84a, 0x7c7, 0xcec, 0x890, 
	0xd1f, 0x5e6, 0xca9, 0x821, 0x949, 0x791, 0x31f, 0xe34, 
	0xfe7, 0xad1, 0x816, 0x6f9, 0xd05, 0xde9, 0x0fb, 0x531, 
	0xb75, 0x0ea, 0xc76, 0x155, 0x12d, 0x2c6, 0x499, 0x032, 
	0x3b4, 0xda3, 0x75a, 0xd04, 0xeb5, 0x008, 0x099, 0x3a3, 
	0xd2b, 0x25d, 0x876, 0xb0c, 0xd6a, 0x4d5, 0xa4f, 0xb4c, 
	0xf27, 0xb01, 0x237, 0x17c, 0x78c, 0xc29, 0xca8, 0x68d, 
	0x0d9, 0xcda, 0xac4, 0xcf6, 0x727, 0xa14, 0x1d0, 0xce3, 
	0x1de, 0x338, 0x23c, 0x243, 0xc39, 0x036, 0xa07, 0x7a7, 
	0xf51, 0x8a8, 0xf77, 0x347, 0xe5f, 0xefb, 0x233, 0x455, 
	0x55f, 0xaa1, 0xda1, 0x4d8, 0x6f8, 0x265, 0x5c5, 0xdfa, 
	0xc5b, 0x3c4, 0xc17, 0xf5f, 0x42d, 0xceb, 0xa71, 0x5e2, 
	0xf57, 0xec7, 0x5c1, 0xd8d, 0xdc9, 0x49a, 0x9f8, 0xcbe, 
	0x15e, 0xdea, 0x2ac, 0x5ae, 0xf21, 0xa32, 0x159, 0x022, 
	0xaea, 0x35c, 0x99e, 0xa78, 0xcd9, 0x240, 0xf32, 0x5a5, 
	0xfe3, 0x5dc, 0xfdf, 0xb71, 0xf6e, 0xf46, 0x28a, 0x5d6, 
	0xa44, 0x13e, 0x034, 0xcdd, 0xbd4, 0xea3, 0x253, 0x1a5, 
	0x181, 0xa8c, 0xb52, 0xd02, 0x4e0, 0xaff, 0xbd8, 0x088, 
	0x975, 0x6ff, 0x3c9, 0xdc4, 0x8d5, 0xce7, 0x280, 0x1ca, 
	0xe80, 0x5ba, 0xa1b, 0xb85, 0x4ad, 0x552, 0xf9d, 0xd0e, 
	0x55e, 0xbbd, 0x0b2, 0x8b3, 0x470, 0x206, 0xb20, 0x1ae, 
	0xd92, 0x11e, 0x1f5, 0x293, 0x3bd, 0xad7, 0xb16, 0x74d, 
	0xa7a, 0x6f5, 0xc54, 0x0db, 0x8d3, 0x81b, 0xb1f, 0xdbd, 
	0xa1f, 0x987, 0xc71, 0x9f9, 0xe4c, 0xf73, 0x175, 0xbcf, 
	0xbbb, 0x1dd, 0x15f, 0x7bc, 0xf5c, 0x86a, 0x03f, 0x156, 
	0x60d, 0x867, 0x2dc, 0x6c4, 0xbd6, 0x7e9, 0x16c, 0x5d4, 
	0xc68, 0x12f, 0x08a, 0x738, 0x3bf, 0xa46, 0x66b, 0xccf, 
	0x238, 0xfaf, 0xc1e, 0xe4b, 0x7b4, 0x908, 0x117, 0x978, 
	0x26b, 0x586, 0x7d2, 0xb69, 0xeb8, 0x184, 0x329, 0x3c1, 
	0x2d5, 0xe00, 0xf9c, 0x441, 0xecc, 0x03c, 0xdab, 0xe37, 
	0x074, 0x09b, 0x860, 0x7d6, 0x8d9, 0xe04, 0x468, 0xc52, 
	0x6fd, 0x0c3, 0x1d7, 0xb4e, 0xe77, 0x98e, 0x541, 0xe93, 
	0xcde, 0xe1f, 0x793, 0xb8b, 0xff4, 0xdb5, 0x881, 0x274, 
	0x294, 0xe4f, 0x87e, 0x107, 0xa83, 0x7f2, 0x5bf, 0x670, 
	0x391, 0x2a6, 0x11d, 0xa1d, 0x24b, 0xb28, 0xb19, 0xb32, 
	0xbe6, 0xfa4, 0x5c8, 0x127, 0x168, 0x1fb, 0x36d, 0x436, 
	0xf48, 0x45e, 0x9f5, 0x1cc, 0x277, 0x493, 0xaf3, 0xb8c, 
	0x940, 0x220, 0xe32, 0x96e, 0x2fd, 0x5c2, 0xf0b, 0xa43, 
	0x19c, 0x6ab, 0xfc5, 0xd07, 0xc4e, 0x7fc, 0x29c, 0xa5c, 
	0xdc8, 0x045, 0x9fd, 0x2d7, 0x476, 0x41a, 0x815, 0xa63, 
	0xd82, 0x20d, 0xda5, 0x1ef, 0xfca, 0xa6d, 0xe54, 0x0a0, 
	0x952, 0xdfc, 0x584, 0x372, 0x666, 0xb18, 0x02e, 0x41d, 
	0xfb4, 0xdf1, 0x363, 0x79a, 0xc83, 0x1c4, 0xdc7, 0xd34, 
	0xd46, 0xc57, 0x1f6, 0x0f9, 0xe6c, 0xeb7, 0xf5e, 0xb17, 
	0x737, 0x1b0, 0xac8, 0xa29, 0x44d, 0xf2a, 0x423, 0x534, 
	0xbc6, 0x27a, 0x6ca, 0x3ab, 0x83d, 0x3e4, 0x849, 0x53f, 
	0xfc1, 0xda0, 0xc3f, 0xea0, 0x868, 0xab3, 0xc8b, 0xc89, 
	0xa0a, 0xbc4, 0x189, 0xb21, 0x3fe, 0x0dc, 0xf70, 0x6b5, 
	0xde2, 0x8ff, 0x242, 0x9bc, 0xbf6, 0x40c, 0x35d, 0xa4c, 
	0x191, 0x41e, 0xb63, 0x7fa, 0xcc5, 0xdda, 0xaad, 0x90e, 
	0xdf7, 0x683, 0x195, 0x8c9, 0xbe1, 0x837, 0x2ab, 0x7c0, 
	0xc37, 0x976, 0x81f, 0x457, 0x95e, 0xbb3, 0xef2, 0xa6f, 
	0x9f0, 0x109, 0xd79, 0x27e, 0xfae, 0x00c, 0xdb6, 0x996, 
	0xcdf, 0x236, 0x264, 0x955, 0xb50, 0x163, 0xe94, 0x0cb, 
	0xe59, 0x37a, 0x969, 0x93d, 0xe21, 0xc8e, 0xebc, 0x6eb, 
	0xfea, 0xa48, 0x047, 0xf31, 0x14b, 0xcc4, 0x182, 0xb02, 
	0x8a1, 0xe14, 0x7b9, 0x977, 0xe18, 0xaf8, 0xb55, 0x18f, 
	0x722, 0x36f, 0x0d7, 0x197, 0x29a, 0xabd, 0xc07, 0x6d9, 
	0x5d8, 0x052, 0x2c2, 0x862, 0xc80, 0xf86, 0xd47, 0x897, 
	0x111, 0x67c, 0xefa, 0x420, 0x10a, 0x693, 0x2f8, 0x5e7, 
	0x2f2, 0x250, 0xe56, 0x6cd, 0x25b, 0x4ab, 0x1eb, 0x7cc, 
	0x239, 0x96d, 0x1bb, 0x6c9, 0xe86, 0xa47, 0x4e5, 0xbd3, 
	0xeb1, 0xf95, 0x16d, 0x748, 0x898, 0x27c, 0xa5b, 0x3df, 
	0x9dc, 0x357, 0xdb0, 0xd58, 0xfcc, 0xf37, 0xff1, 0x3d1, 
	0xb64, 0xd42, 0x2c4, 0x757, 0x0be, 0x0e8, 0xd48, 0x758, 
	0xadc, 0x36b, 0xffe, 0x3d9, 0xa86, 0xdd3, 0x6f2, 0x99a, 
	0x7b8, 0x7a8, 0x724, 0x04d, 0x0b6, 0x2d3, 0xa01, 0xd84, 
	0x26d, 0xb29, 0x573, 0xd9f, 0xacb, 0x859, 0xa39, 0x6ef, 
	0x2fe, 0x7c2, 0x4fc, 0x327, 0xaa5, 0xcd4, 0xb78, 0x174, 
	0x258, 0x382, 0x825, 0x2a8, 0x755, 0x7d8, 0xd60, 0x98a, 
	0x26f, 0x387, 0xa38, 0x416, 0x6d6, 0x986, 0x464, 0xe9a, 
	0x5da, 0x3aa, 0x341, 0x3e3, 0xa9c, 0x150, 0xe85, 0x61b, 
	0xaef, 0x507, 0x4ba, 0x421, 0x829, 0x061, 0x91d, 0x990, 
	0x26e, 0x785, 0x216, 0x0e0, 0xed3, 0x0c5, 0x07c, 0xca3, 
	0x8f1, 0x54a, 0x380, 0x49f, 0x465, 0xa2a, 0x4a3, 0xd4e, 
	0x1d4, 0xf67, 0x993, 0xf18, 0x009, 0x80c, 0x129, 0xb36, 
	0xb41, 0xa54, 0x619, 0x171, 0xd78, 0x83e, 0xfb1, 0xa2d, 
	0xf35, 0x9fe, 0xc30, 0x3ea, 0x45c, 0x035, 0xc8f, 0x8dd, 
	0x561, 0x7fe, 0x39e, 0xe90, 0xfc6, 0x1b3, 0xc9e, 0xbd7, 
	0xf34, 0x1f1, 0x392, 0xe31, 0xe58, 0xf7d, 0x07a, 0x478, 
	0xaa8, 0xd14, 0x6d1, 0xab4, 0x330, 0x535, 0xde0, 0xfb8, 
	0x0d3, 0x349, 0x0e5, 0xe91, 0x025, 0x344, 0xf0c, 0x6e4, 
	0xfd0, 0x35e, 0xa8f, 0x51c, 0x8eb, 0x49b, 0x3d8, 0xb96, 
	0x5b3, 0x28f, 0xafd, 0x9d6, 0xe8f, 0xda4, 0x841, 0xe1c, 
	0xc7e, 0x941, 0x350, 0x06f, 0xd2d, 0x6c7, 0x203, 0xf5b, 
	0xa45, 0x0b9, 0xe5c, 0x937, 0x84e, 0xf25, 0x57a, 0x4b5, 
	0x70d, 0x88f, 0x128, 0xf7c, 0xd2c, 0xf0d, 0x54e, 0x07b, 
	0xcf4, 0x83a, 0x65f, 0xd5c, 0x50b, 0xb9c, 0x183, 0xc94, 
	0x0c9, 0x254, 0x484, 0x0a6, 0xf2f, 0xe17, 0x161, 0xe10, 
	0x5f2, 0x0d2, 0x824, 0xa75, 0x0f5, 0x332, 0xe6e, 0x71d, 
	0x407, 0x702, 0x57d, 0xafa, 0x3a6, 0x0c8, 0x69d, 0x52e, 
	0x438, 0x136, 0x81c, 0x3b3, 0x062, 0x76a, 0x38d, 0x4c1, 
	0x667, 0x07f, 0x2fb, 0xe74, 0xd22, 0xb99, 0x1b8, 0x32e, 
	0x94f, 0xfbd, 0x9d5, 0xa8a, 0x805, 0x001, 0x475, 0x56d, 
	0x194, 0x005, 0x592, 0xb08, 0x9a8, 0xcd3, 0xcc0, 0x878, 
	0x2eb, 0x576, 0x628, 0x8a6, 0x70c, 0x5c6, 0x225, 0x305, 
	0x04e, 0xc22, 0xd8b, 0xcaa, 0xd55, 0xbae, 0x40f, 0x515, 
	0xd19, 0x32c, 0xc46, 0xb33, 0xb93, 0x65b, 0x962, 0x544, 
	0x340, 0x590, 0x41f, 0x7bd, 0xe76, 0x571, 0x065, 0xb6b, 
	0x521, 0xa55, 0xb1b, 0x833, 0xe2f, 0x33b, 0x314, 0xfb5, 
	0x158, 0x355, 0xf36, 0x5c4, 0x8fa, 0x68a, 0xd9d, 0x212, 
	0x0b1, 0x078, 0xcc2, 0xc0a, 0xe52, 0xbef, 0x1bf, 0x118, 
	0x5b4, 0xb61, 0x2e2, 0xaf9, 0x397, 0x4d7, 0xce1, 0xc20, 
	0x144, 0x409, 0x6ba, 0x19e, 0x8e3, 0x075, 0x1d3, 0xb25, 
	0x3a5, 0x1d2, 0x651, 0x6c2, 0x677, 0x069, 0xf62, 0x3a4, 
	0xf8f, 0xd0a, 0x50a, 0xf85, 0xbed, 0x0cd, 0x495, 0xc3c, 
	0xc97, 0x4b3, 0xafb, 0xf72, 0x4ed, 0x1d1, 0x121, 0x087, 
	0x440, 0xe1e, 0x988, 0xf55, 0x572, 0x09c, 0xebd, 0x4b2, 
	0x79c, 0x3de, 0x462, 0x35a, 0x672, 0xd2a, 0x2a7, 0x0f2, 
	0x058, 0x2b9, 0xcaf, 0xe78, 0xefe, 0xce8, 0xcff, 0x54d, 
	0x66f, 0xb5b, 0x126, 0x630, 0x3f5, 0x914, 0x5b6, 0x336, 
	0x904, 0x995, 0x49d, 0x339, 0x7ce, 0xd53, 0xb05, 0x2ca, 
	0x4f8, 0x69c, 0x5f1, 0xae6, 0xae8, 0x71e, 0xe95, 0xeb0, 
	0x17a, 0x1ea, 0x224, 0x974, 0xa40, 0x8e9, 0xa60, 0x3c3, 
	0x4c0, 0x01d, 0x6af, 0xc7a, 0xe8b, 0xfdd, 0x3be, 0x71b, 
	0x65c, 0x991, 0xfcf, 0x0a1, 0x0bc, 0x65d, 0x866, 0x054, 
	0xd06, 0xadd, 0x086, 0xf64, 0x23b, 0x39c, 0x2ae, 0x460, 
	0x241, 0xbf2, 0x968, 0x2aa, 0x68b, 0x119, 0xa84, 0x9b5, 
	0xb7d, 0x3ba, 0x1a1, 0x8c1, 0x834, 0x70e, 0x4a8, 0x297, 
	0x1b1, 0xb2a, 0x026, 0x24c, 0xab0, 0xcef, 0x57e, 0x86f, 
	0x2cb, 0xdcb, 0x971, 0x9d0, 0x4c8, 0x3b7, 0x9a9, 0x003, 
	0xcd8, 0x4f4, 0xc40, 0x6c5, 0x65e, 0x22f, 0xd26, 0xc31, 
	0xe6b, 0xa51, 0x170, 0x3dd, 0x519, 0x808, 0xae3, 0xac5, 
	0x98d, 0x61a, 0xb03, 0x546, 0x013, 0x6b0, 0x133, 0x967, 
	0x3b2, 0x760, 0x2e1, 0xf11, 0x16f, 0x3b8, 0xf58, 0xad4, 
	0xb1a, 0xbb9, 0x844, 0x301, 0x318, 0x525, 0x9f7, 0x8fe, 
	0xf1c, 0x89c, 0x04b, 0x130, 0x894, 0x0bf, 0x750, 0xec2, 
	0x2b8, 0xd7b, 0xf4e, 0xf50, 0xb90, 0xf65, 0xd10, 0x229, 
	0xc69, 0x536, 0x014, 0x29e, 0x9d2, 0x01b, 0x055, 0xb91, 
	0xa50, 0x453, 0x5ef, 0x0f8, 0x802, 0x6a2, 0xea2, 0xc43, 
	0x87a, 0x551, 0xc53, 0x03a, 0xcb0, 0x9c0, 0x01a, 0xa9a, 
	0x214, 0x989, 0x542, 0x7c8, 0x3cf, 0x487, 0x783, 0x262, 
	0x00f, 0xd5a, 0x0b0, 0xa72, 0x1f2, 0x93c, 0xab1, 0x21c, 
	0xefc, 0xfbb, 0x0e4, 0x707, 0xc02, 0x1b6, 0xa52, 0x7da, 
	0x762, 0xbdc, 0x719, 0x5a6, 0x28c, 0x24e, 0x1f7, 0x37b, 
	0x980, 0x645, 0xd4c, 0x1c7, 0x4f5, 0x24f, 0xd5f, 0x0ec, 
	0x51b, 0xeee, 0x4bc, 0x84d, 0x0fa, 0xba2, 0x1e6, 0xa76, 
	0x1c0, 0x9af, 0xbfb, 0x505, 0x433, 0x954, 0x260, 0x5f8, 
	0xe68, 0xad9, 0x3ae, 0x6cb, 0xf93, 0x322, 0xcae, 0xaa4, 
	0x33c, 0x7b3, 0xf4a, 0x1e9, 0x733, 0x5c7, 0xd6b, 0x1ee, 
	0x5a0, 0x6e8, 0xcd5, 0xb58, 0xc35, 0xc55, 0x696, 0xe66, 
	0xfc7, 0xac1, 0x2b6, 0x348, 0xda2, 0x6f4, 0x2bc, 0xa73, 
	0x874, 0x2f3, 0x1db, 0x819, 0x905, 0x9f2, 0x0b7, 0x4a7, 
	0x211, 0xf41, 0x5aa, 0xa5d, 0xbd5, 0x910, 0xb54, 0x0ed, 
	0x112, 0x3d6, 0x370, 0x22d, 0xcfc, 0x7bb, 0xedc, 0x926, 
	0x4b0, 0x207, 0x74f, 0xa3b, 0x269, 0xddf, 0x73e, 0xf79, 
	0xadf, 0x6f1, 0x408, 0xdaa, 0x2c8, 0x58b, 0x61c, 0x2b0, 
	0xc14, 0x482, 0x55c, 0x44e, 0xeb3, 0x6a0, 0x9ae, 0x8b6, 
	0x4f9, 0x328, 0x545, 0x2fc, 0xeac, 0x2c7, 0x999, 0x946, 
	0x8a4, 0xbaa, 0xa13, 0xf10, 0xe84, 0xbe3, 0xd7d, 0x857, 
	0x5ad, 0x417, 0xeb9, 0xb3e, 0x085, 0x854, 0x0f3, 0x858, 
	0x3a8, 0x4e4, 0x62a, 0xd8e, 0xc09, 0x9be, 0x1ed, 0x2a1, 
	0x0ac, 0xd9a, 0x3b9, 0x418, 0x223, 0x17f, 0x4e6, 0x9cd, 
	0x7ee, 0xc50, 0xa80, 0x162, 0x5c0, 0x717, 0xef5, 0x59e, 
	0x4cc, 0xebe, 0xce5, 0x6df, 0xbbc, 0x0fd, 0xfa9, 0x845, 
	0xfc3, 0xaa9, 0x7f4, 0xf63, 0xe75, 0x091, 0xef9, 0xfba, 
	0xedb, 0x502, 0x77e, 0xd18, 0x473, 0xe29, 0xa3e, 0x4c5, 
	0x564, 0xb86, 0xd69, 0x539, 0xd6e, 0x27f, 0xc38, 0xf39, 
	0x7ac, 0x533, 0x2e5, 0x20f, 0x381, 0x7f7, 0x55d, 0x543, 
	0x7a9, 0xb4d, 0xfd4, 0x661, 0x629, 0x30a, 0xa36, 0xfe4, 
	0x789, 0x28d, 0x5cd, 0x715, 0xe53, 0x54f, 0x256, 0xe44, 
	0x1e7, 0x39b, 0x63a, 0x13c, 0xb5e, 0x6e6, 0x831, 0x653, 
	0x179, 0x356, 0xb5f, 0x080, 0xf3e, 0xdcf, 0x004, 0x8b4, 
	0x1a0, 0xfe8, 0x30d, 0x320, 0x09f, 0xdf2, 0xab2, 0x48d, 
	0x053, 0x36e, 0xe47, 0x84b, 0x95b, 0x776, 0xee7, 0xd66, 
	0x4ac, 0xd99, 0x64f, 0x14d, 0x44f, 0x10f, 0x5ee, 0xc4b, 
	0x2dd, 0x98b, 0x07e, 0xa7c, 0x7b5, 0x1e2, 0x809, 0x3c8, 
	0x125, 0x3b1, 0xf78, 0x353, 0x0af, 0xc99, 0xb24, 0xf88, 
	0x5a8, 0x67a, 0xa12, 0xd64, 0x134, 0x618, 0x0d6, 0xdaf, 
	0x6ad, 0x778, 0xec1, 0x331, 0x079, 0x14f, 0x0ab, 0x20e, 
	0xc9b, 0x77d, 0x3a9, 0xff6, 0x761, 0xb8a, 0x527, 0x595, 
	0x828, 0x811, 0x52a, 0x226, 0x114, 0x146, 0x15a, 0xd00, 
	0x84c, 0x814, 0x51d, 0x864, 0xf00, 0x210, 0x6e0, 0x67d, 
	0xd94, 0x51e, 0x63c, 0x3b0, 0x3ad, 0x5a3, 0x16b, 0x664, 
	0xed1, 0xa0d, 0x7c9, 0x4b7, 0x965, 0x605, 0x60b, 0xfa1, 
	0x752, 0x6d8, 0xa9e, 0x30f, 0x296, 0x2df, 0x8e7, 0x530, 
	0x38b, 0x31e, 0x231, 0x582, 0x9bb, 0x261, 0x511, 0xfce, 
	0x5d7, 0x14a, 0xb37, 0x12a, 0x351, 0xbb4, 0x5eb, 0x7b0, 
	0x55b, 0x34f, 0x640, 0xd98, 0xbfa, 0x5e0, 0x400, 0x7d7, 
	0xdff, 0xcb7, 0x7db, 0x97e, 0x7b2, 0xdee, 0xeda, 0xff0, 
	0xc60, 0xc49, 0x76f, 0x377, 0xc9f, 0x2a5, 0x3a0, 0x9bf, 
	0xa57, 0x05b, 0x1a8, 0x066, 0x5ed, 0x48e, 0x343, 0x709, 
	0x513, 0xfa3, 0x12c, 0x22a, 0xf83, 0x2c0, 0x020, 0x192, 
	0x623, 0x93e, 0xd4b, 0x97c, 0xb67, 0xe99, 0xef8, 0xd03, 
	0x396, 0x234, 0x663, 0x368, 0xa28, 0x44b, 0x2bf, 0x18b, 
	0x5db, 0xeed, 0xa24, 0xc5e, 0x720, 0xff9, 0xf4b, 0x05e, 
	0x8f0, 0x78e, 0x57b, 0xf5a, 0x50f, 0x139, 0xef7, 0x6c8, 
	0x1fa, 0xf01, 0x588, 0x31c, 0x448, 0x4d1, 0x249, 0x7ec, 
	0x3d2, 0xc63, 0x547, 0xf0e, 0xc2c, 0x2d6, 0xfeb, 0xc25, 
	0x744, 0xcfe, 0xf15, 0x01c, 0xa82, 0xcf5, 0x7aa, 0xa6a, 
	0x2f1, 0x442, 0xccb, 0x32b, 0x0a9, 0x092, 0x143, 0xabf, 
	0x735, 0x8dc, 0xa62, 0xa5a, 0xe2d, 0xb7a, 0x5bd, 0xdca, 
	0x6d7, 0xe36, 0x4dc, 0x11a, 0x9e1, 0xf03, 0x74e, 0x2d9, 
	0x66e, 0x367, 0x512, 0x010, 0x204, 0x6a1, 0xd29, 0x3d4, 
	0x399, 0x08f, 0x1e8, 0xaec, 0x205, 0x979, 0x7c6, 0x21d, 
	0x523, 0x687, 0x16a, 0x77f, 0x359, 0x555, 0x278, 0xa02, 
	0x8ed, 0x1cf, 0xd23, 0xfc9, 0x68e, 0xa6b, 0x69f, 0x67f, 
	0x3c0, 0x53e, 0xe51, 0x446, 0x308, 0x00e, 0x00b, 0xf02, 
	0x4ae, 0xf26, 0xfb2, 0x4e1, 0xaa2, 0x701, 0xeb6, 0x8c3, 
	0x6e5, 0xf06, 0x202, 0x820, 0x19b, 0x9b7, 0xa17, 0x771, 
	0xd28, 0x6d4, 0xe8d, 0x122, 0x7a5, 0x676, 0x8bc, 0x8d6, 
	0xc5f, 0x2c5, 0xcbd, 0x037, 0x456, 0x325, 0xd7f, 0x4dd, 
	0x732, 0x6f0, 0x997, 0x57c, 0x23e, 0xf80, 0x799, 0x57f, 
	0x230, 0x950, 0x9bd, 0x7a0, 0xc48, 0x654, 0x692, 0x34c, 
	0x73d, 0xc6f, 0x145, 0xbca, 0x4d0, 0xd33, 0x680, 0x91b, 
	0x2a3, 0x472, 0xb3a, 0xdd7, 0x784, 0x1e3, 0x9ea, 0xb98, 
	0xd95, 0xc9a, 0x454, 0x167, 0xba8, 0x7d9, 0x9ba, 0x492, 
	0x2f5, 0x942, 0x93f, 0x694, 0xc9c, 0x042, 0x71a, 0xd39, 
	0x684, 0xd88, 0x7e5, 0xbff, 0x8b5, 0x9e9, 0x1f4, 0xcac, 
	0x1f3, 0x217, 0x0c4, 0x1bc, 0xfec, 0x9a7, 0x797, 0x0df, 
	0xc19, 0xede, 0xc6d, 0x172, 0x46a, 0x2af, 0x101, 0x88d, 
	0x3c7, 0x486, 0x846, 0x528, 0x674, 0x2d4, 0x639, 0xa3c, 
	0x259, 0xc27, 0xd9b, 0x0c2, 0xf84, 0x12e, 0x413, 0x9df, 
	0x548, 0xfaa, 0x7c3, 0x0e9, 0x740, 0xe3b, 0x657, 0x558, 
	0x95c, 0x0a7, 0xe24, 0xd9e, 0x067, 0x4ee, 0x83c, 0x401, 
	0xf30, 0x20a, 0xfb3, 0x403, 0xaba, 0x4a6, 0x3bb, 0xf9e, 
	0xcb1, 0x5b2, 0x9e2, 0x4bd, 0x11f, 0xb6a, 0x3b5, 0x3ac, 
	0x90d, 0x981, 0x9ff, 0x3db, 0x938, 0x4c3, 0x934, 0x0aa, 
	0x04a, 0x4ea, 0xdde, 0xf3d, 0x3e9, 0x741, 0xb14, 0x930, 
	0x3cb, 0xf24, 0xd20, 0xb34, 0xea7, 0xd43, 0xff2, 0x414, 
	0x3f7, 0x8de, 0x63d, 0xd1c, 0xec6, 0x268, 0x335, 0x58a, 
	0x388, 0x38f, 0x8c0, 0xd90, 0x398, 0x093, 0x2a4, 0xd15, 
	0xcf8, 0x02c, 0x8a0, 0x011, 0x6e2, 0x5cc, 0xbb7, 0x060, 
	0x432, 0xc96, 0xf92, 0xe42, 0x875, 0x30e, 0x323, 0x59d, 
	0xc56, 0xa6c, 0xe49, 0xdb8, 0xc7c, 0x313, 0x7e1, 0x29d, 
	0xe69, 0x2ea, 0x80e, 0x3f9, 0x309, 0xa37, 0xfe1, 0x190, 
	0xbb8, 0x494, 0xed0, 0x682, 0xee4, 0x4c4, 0xdf9, 0x606, 
	0x5bc, 0xd54, 0xd76, 0x794, 0x9d1, 0xc58, 0x903, 0x227, 
	0x4ce, 0x2bd, 0x753, 0x66d, 0x877, 0x892, 0x5a4, 0xb0a, 
	0x358, 0xe3d, 0x5bb, 0xe40, 0x266, 0xf07, 0x7df, 0x393, 
	0x901, 0x40a, 0xbd0, 0x200, 0x2e8, 0x879, 0xb88, 0x792, 
	0xbf0, 0x9fb, 0xa77, 0x78b, 0x851, 0x5f3, 0x04f, 0x25a, 
	0x8ab, 0x46c, 0xc67, 0x655, 0x53a, 0xd2e, 0xf12, 0x361, 
	0xe96, 0x83f, 0x2cc, 0x43a, 0x89b, 0x13a, 0xbea, 0x385, 
	0x66a, 0x3e5, 0xd89, 0x7ef, 0xd62, 0xa0f, 0x6fc, 0xfff, 
	0x5af, 0x7a1, 0x838, 0x560, 0x634, 0xcc6, 0x6e7, 0x98c, 
	0xbc7, 0xd27, 0x583, 0x8bf, 0x749, 0xeff, 0xe09, 0x947, 
	0xda9, 0x411, 0xef0, 0x516, 0x822, 0x7e8, 0xd8c, 0x4ec, 
	0x9d4, 0xe9c, 0xe55, 0x4af, 0xfb7, 0x4bb, 0x33f, 0x106, 
	0x5ac, 0x93a, 0x5ca, 0x1ff, 0x23f, 0x34b, 0x935, 0xb27, 
	0xb95, 0x46b, 0x622, 0xca6, 0xbc9, 0x22c, 0xe2b, 0xdfb, 
	0xc2f, 0x585, 0x113, 0x4ef, 0xeaa, 0x4c7, 0x282, 0xa96, 
	0xac0, 0x33e, 0x87c, 0x4d6, 0x383, 0xb9d, 0x853, 0x209, 
	0x098, 0xe27, 0x839, 0x78a, 0x917, 0x8c4, 0x72a, 0x688, 
	0x72c, 0x3f6, 0xaa3, 0x75f, 0xc7f, 0xd38, 0xd6f, 0x8b8, 
	0x5ec, 0xa05, 0x503, 0x378, 0xc4c, 0x540, 0x439, 0xdd8, 
	0xf47, 0x007, 0xed2, 0x286, 0x90f, 0x334, 0xab9, 0x948, 
	0x51f, 0x695, 0x0de, 0x000, 0x290, 0x8bb, 0xc2b, 0xa92, 
	0x8ee, 0xbcd, 0x537, 0xec5, 0x665, 0x36a, 0x8ae, 0xb47, 
	0x017, 0x577, 0xe5b, 0x593, 0x852, 0xb12, 0xcee, 0x565, 
	0x798, 0xc3b, 0x82d, 0x7ca, 0xef4, 0xc4a, 0x790, 0x289, 
	0x116, 0x929, 0x8a9, 0x52d, 0x6ea, 0x4cb, 0xf13, 0x033, 
	0x871, 0x1cd, 0x095, 0x7f1, 0x58d, 0x889, 0xe0f, 0x92c, 
	0xbad, 0x89d, 0xe43, 0x01f, 0x7e6, 0xe7a, 0x076, 0x927, 
	0x92a, 0x53d, 0x142, 0x152, 0x16e, 0x9ad, 0x1e4, 0x6bf, 
	0xa20, 0x6ed, 0x6b3, 0xdd1, 0x708, 0x8c7, 0xf4f, 0xa8e, 
	0xc81, 0xf9a, 0x1c1, 0x685, 0xb5d, 0x427, 0x751, 0xa65, 
	0x34e, 0x05d, 0x43b, 0x5ce, 0x8b1, 0xe0e, 0x5e1, 0xec8, 
	0x85f, 0x8a7, 0x95f, 0x4b6, 0x064, 0x094, 0x1d6, 0xb6d, 
	0x6a9, 0x374, 0x176, 0x22b, 0xbc1, 0xc0c, 0x44c, 0x2d8, 
	0x2d2, 0x311, 0xdc2, 0x7af, 0xba3, 0x1cb, 0xbde, 0x5b7, 
	0xda7, 0x42e, 0x678, 0x0da, 0x1fc, 0x3d7, 0xdf0, 0x376, 
	0xb4b, 0xad8, 0x873, 0x32a, 0x9ca, 0x8fc, 0x47d, 0xa99, 
	0xf40, 0x06b, 0xa7e, 0xffa, 0x8d7, 0xf81, 0x40b, 0x5a1, 
	0xca0, 0xb1c, 0x36c, 0x510, 0xbaf, 0xb7e, 0x7a3, 0x6d2, 
	0x352, 0x5df, 0x94a, 0xfa7, 0x3bc, 0x3f4, 0x68f, 0x526, 
	0x97b, 0xb8e, 0x4db, 0xdef, 0x068, 0x412, 0x13d, 0x95d, 
	0x51a, 0xad6, 0x3c5, 0xcba, 0x69e, 0x6b7, 0x8aa, 0xd51, 
	0xe1d, 0xa67, 0x498, 0xa74, 0x913, 0x406, 0xf3c, 0x7e2, 
	0xe0a, 0xb06, 0x7e4, 0x68c, 0xdd9, 0xea5, 0x45a, 0x7cd, 
	0xa04, 0x467, 0xce0, 0xe6a, 0x5e3, 0x3b6, 0x490, 0xb62, 
	0x50d, 0xae9, 0xa42, 0x0a2, 0x215, 0xddb, 0xce6, 0x810, 
	0x631, 0x725, 0x759, 0x6fb, 0xe67, 0x8e4, 0x840, 0x3a1, 
	0x754, 0x169, 0x9de, 0xf60, 0x58f, 0x213, 0xd5e, 0xbda, 
	0x390, 0x5fd, 0xe1b, 0x95a, 0xfe0, 0xb0b, 0x92f, 0x0b5, 
	0xdeb, 0x2f6, 0xad5, 0x972, 0x8ce, 0xbe5, 0xc18, 0x689, 
	0xcc9, 0xf5d, 0x6c3, 0x638, 0x6bd, 0x497, 0xc36, 0xbe7, 
	0x992, 0x6b6, 0x5ff, 0x925, 0x872, 0x444, 0x772, 0xd4a, 
	0x870, 0xd4f, 0x307, 0x779, 0xb2c, 0x3f8, 0x275, 0x52b, 
	0x040, 0xbe2, 0xf05, 0xa10, 0x6d0, 0xc90, 0xfa6, 0x714, 
	0xc70, 0x6e3, 0x1df, 0xbe8, 0x671, 0x9ec, 0x437, 0x570, 
	0xba0, 0x346, 0x20b, 0x59f, 0xc51, 0xde4, 0x15b, 0x6e9, 
	0x47b, 0x85b, 0x92d, 0x19a, 0x6cc, 0x712, 0x1b9, 0xde6, 
	0x652, 0x333, 0x8b0, 0xc42, 0xd75, 0x2ff, 0x92b, 0xe73, 
	0x6d3, 0xe07, 0xb0e, 0x985, 0x923, 0x887, 0xfe2, 0x1aa, 
	0x050, 0xde1, 0x939, 0xe83, 0x430, 0xdb9, 0x94c, 0xeb2, 
	0xc66, 0x76c, 0x2de, 0x23a, 0x765, 0xca2, 0x780, 0x2e7, 
	0x29f, 0xd74, 0x627, 0x88b, 0x94e, 0x188, 0xae0, 0x362, 
	0x3d0, 0x0c0, 0x9f4, 0x9e5, 0xc8a, 0x8a3, 0xaf1, 0x0d4, 
	0xc62, 0x966, 0xa23, 0xc2d, 0xe12, 0x4f0, 0x931, 0xecf, 
	0x4ca, 0x8ef, 0xa7b, 0xa58, 0xb82, 0xace, 0x0a8, 0x6db, 
	0xf20, 0xbbe, 0xdcd, 0x429, 0xbb1, 0x60f, 0xa9b, 0xa3a, 
	0x7d5, 0x09e, 0x0a4, 0x77b, 0x326, 0x87b, 0x6b1, 0x568, 
	0xce9, 0x8f6, 0xd40, 0xe22, 0x964, 0x69a, 0x8e5, 0x0fe, 
	0xf1d, 0x609, 0x17d, 0x500, 0xd73, 0xdf4, 0x3ca, 0x123, 
	0x62c, 0xc3d, 0x1d5, 0x0cc, 0x08c, 0x19f, 0xf44, 0x922, 
	0xe15, 0x345, 0xa69, 0xece, 0x615, 0xa9f, 0xb59, 0x39a, 
	0x42b, 0x64d, 0x084, 0x281, 0x7ed, 0x919, 0x287, 0xea1, 
	0x91e, 0x3d5, 0xc74, 0x909, 0x907, 0x2e3, 0xcdb, 0xce4, 
	0x489, 0x994, 0x608, 0x2ad, 0x91c, 0x958, 0x375, 0x9ab, 
	0xdce, 0xfb9, 0x05a, 0x796, 0x856, 0x75c, 0x56e, 0x6a6, 
	0xcf2, 0xbfd, 0x324, 0x766, 0xebf, 0x1b4, 0x835, 0x686, 
	0x6aa, 0x723, 0xab5, 0xb2f, 0xfa5, 0xf9b, 0xf4c, 0x1dc, 
	0xc79, 0x272, 0x029, 0x764, 0xa59, 0xd61, 0xc93, 0x642, 
	0x1a2, 0xf7f, 0x2a0, 0x62b, 0xc04, 0xd35, 0x451, 0x64c, 
	0x578, 0x2b5, 0xeca, 0x9a2, 0xf59, 0x865, 0xb31, 0xffb, 
	0x23d, 0x76b, 0x415, 0x84f, 0x0ce, 0xd5d, 0xa06, 0x557, 
	0xa25, 0xfc8, 0x1ba, 0x3f1, 0x6a7, 0xf74, 0x96a, 0xf7e, 
	0x63e, 0xbb5, 0x956, 0x45f, 0x471, 0x700, 0x1bd, 0x369, 
	0xabb, 0xf82, 0xe81, 0x5d0, 0x9a6, 0x2a2, 0x4f2, 0xf1a, 
	0x187, 0x06a, 0x2b1, 0xcfd, 0x7fb, 0x716, 0x059, 0x4a0, 
	0x138, 0x0c1, 0xabc, 0x72b, 0xbba, 0x4be, 0xe0d, 0x5dd, 
	0x10d, 0xdbb, 0xd41, 0xad3, 0x47a, 0xc15, 0x3ee, 0x28e, 
	0x25c, 0x3e2, 0x7f5, 0xad0, 0x85d, 0x4a2, 0x4f7, 0x64e, 
	0xd67, 0xe8c, 0x235, 0x03d, 0xbcc, 0x9b6, 0x0cf, 0x365, 
	0xc12, 0x9b4, 0xb3c, 0xe39, 0x7ff, 0xd7c, 0x153, 0x7e3, 
	0x983, 0xcc1, 0xd80, 0xc73, 0x108, 0xe03, 0x1c8, 0xfe6, 
	0x4fa, 0xdd2, 0x736, 0xdb7, 0xc95, 0xdb1, 0xe8e, 0x832, 
	0x0f4, 0xcfb, 0xa0c, 0x1be, 0xfad, 0x0e6, 0xd24, 0x5f4, 
	0x057, 0xa4e, 0x9da, 0x0b8, 0xc08, 0x730, 0xfd2, 0x3cd, 
	0x747, 0x8c6, 0x3ed, 0x2b3, 0x360, 0x906, 0x3eb, 0x2f9, 
	0x960, 0x7a6, 0x9d7, 0x3e6, 0x9b9, 0x64a, 0xf4d, 0x7dd, 
	0x0fc, 0x10b, 0x522, 0x267, 0xc92, 0xb11, 0x75b, 0x366, 
	0xffd, 0x768, 0xe87, 0x0f6, 0x745, 0x920, 0x538, 0xde5, 
	0xe45, 0xaa0, 0x52c, 0xdb4, 0x2ef, 0x763, 0xa34, 0x426, 
	0xa1e, 0x461, 0xb22, 0x944, 0x7c1, 0x7f3, 0x2e0, 0x45d, 
	0x1ec, 0xa30, 0x1a3, 0x34d, 0x886, 0xabe, 0x596, 0xb10, 
	0xa15, 0x6c0, 0x9c4, 0x99f, 0x79e, 0x843, 0xf7b, 0x4f6, 
	0xbee, 0xc87, 0xb39, 0x1f0, 0x597, 0x154, 0xef3, 0xb5c, 
	0x299, 0xc45, 0x0dd, 0xc2a, 0x1a4, 0x769, 0x08d, 0x918, 
	0x721, 0xb3f, 0x115, 0x257, 0x5de, 0xd52, 0xc0f, 0x185, 
	0x75e, 0xc78, 0x7c4, 0xfa0, 0xb30, 0xc4f, 0x0c6, 0x96b, 
	0x312, 0x9e4, 0x31d, 0x48f, 0x52f, 0x728, 0x05f, 0xb40, 
	0x8d1, 0x1ab, 0x20c, 0x276, 0x24a, 0x574, 0xb60, 0x726, 
	0xf0a, 0x96f, 0x3ec, 0xd08, 0x777, 0x86b, 0x900, 0x9a5, 
	0xf2e, 0xf98, 0x59a, 0x016, 0xe88, 0x371, 0x41c, 0xf17, 
	0xf8c, 0xbf5, 0x951, 0x41b, 0x6a8, 0xa21, 0xd85, 0xa2f, 
	0x8ea, 0xe19, 0x67b, 0x649, 0x039, 0x85a, 0x443, 0x6ee, 
	0xd93, 0xe82, 0x6a4, 0xba9, 0x180, 0x3a7, 0xf23, 0xbd1, 
	0x78d, 0xf7a, 0xa2c, 0x92e, 0xdcc, 0x827, 0x246, 0x445, 
	0xc1b, 0xafc, 0x594, 0xa5e, 0x218, 0xe92, 0xe35, 0x656, 
	0x611, 0xb07, 0xb2e, 0x94b, 0x47f, 0x6fe, 0x049, 0x2f4, 
	0xb48, 0xa6e, 0x604, 0x6ce, 0x1fd, 0x4b4, 0xb35, 0xcf9, 
	0xd8a, 0x018, 0xa2e, 0xf8a, 0x830, 0xb2b, 0xbb6, 0x6de, 
	0xd49, 0x5fe, 0x7d4, 0x5a2, 0xc6a, 0x37f, 0x2fa, 0x4aa, 
	0xdac, 0xfdc, 0xf9f, 0x637, 0x86e, 0x32f, 0x53b, 0xc3a, 
	0xb1d, 0x63b, 0x957, 0xf19, 0xcd7, 0x549, 0xa09, 0x813, 
	0x06d, 0x50e, 0xd45, 0x504, 0x97d, 0x24d, 0x8f2, 0xa08, 
	0x817, 0x8c8, 0x8b2, 0xbf3, 0xcb9, 0x756, 0x9e0, 0x8db, 
	0x7ad, 0x5d2, 0x6f7, 0xe5d, 0x812, 0x9c1, 0x219, 0xdc1, 
	0xa64, 0xb6c, 0x532, 0xc5a, 0xdec, 0xa16, 0xdd0, 0xab6, 
	0x452, 0xb3d, 0x9c2, 0xf33, 0xcb8, 0x26c, 0xada, 0x485, 
	0xa88, 0xaed, 0x636, 0xb7f, 0xa9d, 0xa56, 0x17b, 0xc05, 
	0x8f3, 0xbe9, 0x38c, 0x74a, 0xe28, 0x1f9, 0xfef, 0x0d1, 
	0xfc2, 0x447, 0xef6, 0xac3, 0x4a5, 0x491, 0x6c1, 0xe23, 
	0x8f5, 0x6dc, 0x8f9, 0x580, 0xf1b, 0xb6f, 0x404, 0xd4d, 
	0x271, 0x228, 0x9f6, 0x021, 0xb42, 0x3f0, 0xac7, 0x675, 
	0xa11, 0xa27, 0xbac, 0x295, 0xb23, 0x132, 0x463, 0xa1a, 
	0xaa7, 0x7f6, 0xb46, 0x9ed, 0x35f, 0x05c, 0xbc5, 0x2e9, 
	0x8f4, 0x916, 0xb26, 0x598, 0xe64, 0x982, 0x3c2, 0xf90, 
	0xbdb, 0xcb5, 0x5b0, 0x02d, 0x3f3, 0x888, 0x1e5, 0xb38, 
	0x506, 0x59c, 0x9eb, 0x81d, 0xe7c, 0x70f, 0x5ea, 0x100, 
	0xe08, 0x7ba, 0xe62, 0x5d5, 0x310, 0xccc, 0x6cf, 0xee8, 
	0xb2d, 0x75d, 0x90a, 0xcf7, 0x222, 0x428, 0x9b8, 0xc03, 
	0xa7d, 0x2f7, 0x031, 0xd9c, 0x394, 0x2f0, 0x488, 0x26a, 
	0x704, 0x2db, 0xe7d, 0x61d, 0x973, 0x89e, 0xb92, 0xaaa, 
	0xc1f, 0xfc4, 0x14e, 0x56f, 0x2a9, 0x198, 0xf42, 0xd25, 
	0xb8d, 0x73a, 0x06c, 0xd44, 0x45b, 0x5e9, 0xbd2, 0x842, 
	0x882, 0x626, 0x82b, 0xd87, 0x306, 0x8fb, 0x658, 0x89a, 
	0xbce, 0xe2c, 0xc75, 0x1ac, 0xf87, 0x21e, 0x679, 0x93b, 
	0x81e, 0xaaf, 0x466, 0xd96, 0x70a, 0x46d, 0xa53, 0xa2b, 
	0xcea, 0xa81, 0xa4d, 0xd01, 0xaac, 0x5ab, 0xf75, 0xd83, 
	0x9c7, 0xf1f, 0x1ad, 0xf53, 0xade, 0x6ec, 0x6da, 0x895, 
	0xfee, 0x48b, 0x483, 0x742, 0x024, 0x255, 0xd5b, 0x3fc, 
	0x4ff, 0x74b, 0xd1d, 0x151, 0xe26, 0x9f1, 0x4cf, 0xf66, 
	0xca4, 0xfbc, 0x8c2, 0x477, 0x28b, 0x0ca, 0x1d8, 0x633, 
	0xacc, 0x563, 0x644, 0x321, 0xfe5, 0x38e, 0xf8b, 0x556, 
	0xd0c, 0x395, 0x774, 0x770, 0x61f, 0xa94, 0x0ae, 0xcfa, 
	0x42a, 0x1c6, 0x402, 0x27b, 0xa18, 0xf6b, 0xe3c, 0x08e, 
	0xcb6, 0xedf, 0x818, 0xb94, 0x697, 0xbfe, 0xeef, 0xe0b, 
	0x7bf, 0x027, 0x698, 0x76e, 0x60e, 0xd63, 0xcbf, 0x59b, 
	0x0e2, 0xb0d, 0x1a7, 0x643, 0x7eb, 0xfd3, 0x379, 0x232, 
	0xa89, 0x787, 0xeec, 0xfbf, 0xf3a, 0x8e2, 0x0bd, 0x425, 
	0x620, 0x734, 0x435, 0x6dd, 0x600, 0x711, 0x6c6, 0xea6, 
	0x7dc, 0xfab, 0x18a, 0x072, 0x5f7, 0x1b2, 0x147, 0x002, 
	0x43c, 0x5cf, 0x35b, 0x410, 0xe97, 0xc86, 0x614, 0xbf9, 
	0xed9, 0xfde, 0x4eb, 0xc7b, 0xfd6, 0xca1, 0xd0d, 0x807, 
	0xb9a, 0xf2c, 0x77a, 0x1fe, 0x164, 0xc61, 0xbeb, 0xd81, 
	0xdc0, 0xf14, 0x61e, 0xd91, 0xcc8, 0x97a, 0xca7, 0xc32, 
	0x431, 0xedd, 0xfcb, 0xaeb, 0xd13, 0xbe0, 0x2ec, 0x43e, 
	0x912, 0x165, 0xb84, 0x6a3, 0x581, 0x247, 0x1a6, 0x22e, 
	0x501, 0x097, 0x613, 0xe41, 0xe3a, 0x587, 0x102, 0xd12, 
	0xf2d, 0x62f, 0xc06, 0x1a9, 0x4b9, 0x4d9, 0x141, 0xd8f, 
	0xe4d, 0x459, 0x9c6, 0x300, 0x199, 0x566, 0xded, 0xe7b, 
	0xbe4, 0x4fe, 0x3fb, 0x071, 0xfda, 0xcc7, 0xd56, 0xc41, 
	0xc00, 0x08b, 0x579, 0xba1, 0xbab, 0xb3b, 0xcd2, 0xcca, 
	0x8ad, 0x2ce, 0xee6, 0xe63, 0x2da, 0x883, 0xab7, 0x06e, 
	0x4da, 0xb80, 0x1c3, 0x7ea, 0x270, 0xacf, 0x006, 0x9cb, 
	0xc4d, 0xc82, 0x4c2, 0xfd7, 0x899, 0x43d, 0xda8, 0x2b4, 
	0x3f2, 0xaa6, 0x6a5, 0x3dc, 0x2ba, 0x933, 0xc34, 0x8cd, 
	0xa35, 0x6e1, 0xa49, 0x2ee, 0x1c2, 0xc5c, 0xef1, 0x14c, 
	0x91f, 0x731, 0xba4, 0x553, 0xba5, 0x3fa, 0x509, 0xc77, 
	0x961, 0x804, 0x1e1, 0x5e5, 0x8d8, 0x302, 0xd7a, 0xb65, 
	0x8d0, 0xa85, 0x196, 0xcab, 0x0d8, 0x252, 0xc7d, 0xd6c, 
	0x2e4, 0x0c7, 0x25f, 0x135, 0xe38, 0x9b2, 0xbf1, 0xe25, 
	0x8a5, 0x0ef, 0x691, 0xe13, 0x616, 0xd11, 0x76d, 0xa3f, 
	0xddd, 0x601, 0xe50, 0x38a, 0x90b, 0xea4, 0x3af, 0x710, 
	0xa61, 0x5b9, 0x073, 0x6b4, 0x82a, 0xed7, 0x662, 0xf04, 
	0x063, 0xc0b, 0x5d9, 0x458, 0x474, 0x5e4, 0x5fc, 0x479, 
	0x669, 0xd71, 0x99d, 0xb7c, 0x2c9, 0xf68, 0x30c, 0xdd6, 
	0xe3f, 0x885, 0x263, 0xd17, 0xff8, 0xd0b, 0xf69, 0x786, 
	0xe2a, 0xdad, 0x051, 0x5d3, 0xd59, 0x559, 0xa22, 0x089, 
	0xd3c, 0x47c, 0x767, 0xd6d, 0x25e, 0x7de, 0xb0f, 0x73f, 
	0x88a, 0xb68, 0x73c, 0x959, 0x998, 0xa87, 0x43f, 0x9d9, 
	0x33a, 0x364, 0xf71, 0xe6d, 0x99b, 0x4e8, 0x855, 0x4df, 
	0x517, 0xc0e, 0x562, 0xc5d, 0x8cc, 0xa19, 0xa41, 0x1e0, 
	0x5cb, 0x743, 0xf8d, 0xf22, 0xdf5, 0x208, 0xe20, 0x625, 
	0xd31, 0xfbe, 0x646, 0xe16, 0xaee, 0xe72, 0x070, 0xed6, 
	0x690, 0x599, 0xfdb, 0x9fa, 0xac2, 0x8c5, 0xb53, 0x384, 
	0xc28, 0xf49, 0x7f9, 0xb51, 0x19d, 0xb49, 0x37e, 0x56a, 
	0x9b0, 0xb72, 0xd1a, 0xa7f, 0xb83, 0x98f, 0x660, 0x315, 
	0xc3e, 0x4e3, 0xb45, 0xcbc, 0x6b2, 0xdae, 0x924, 0xcdc, 
	0xfd5, 0x518, 0x015, 0xb44, 0xdf3, 0xae1, 0xfd1, 0xf29, 
	0xf28, 0xbd9, 0x7d3, 0x610, 0xacd, 0x9a3, 0x850, 0x699, 
	0xc44, 0xb5a, 0x6ac, 0x80b, 0x83b, 0x0f1, 0x921, 0xfa2, 
	0xcc3, 0x58e, 0x0a5, 0xe65, 0x8b9, 0xec3, 0x15d, 0x7ab, 
	0x0eb, 0xdbf, 0xcb3, 0xf97, 0xe9d, 0x9c8, 0x823, 0xe7e, 
	0xaf6, 0xb6e, 0x4cd, 0x94d, 0xc6c, 0xc1c, 0xa26, 0xfb0, 
	0x4d3, 0xebb, 0x2ed, 0x718, 0x4b1, 0xe7f, 0xbf8, 0xbc3, 
	0x2cd, 0x157, 0x90c, 0xd2f, 0x354, 0x30b, 0x342, 0xd09, 
	0x29b, 0x62d, 0x11b, 0x74c, 0x9c9, 0x9f3, 0x291, 0xafe, 
	0x044, 0x389, 0xd30, 0x10e, 0xdd5, 0x6bc, 0x80a, 0xd1e, 
	0x729, 0xa98, 0x788, 0x4d2, 0xbb2, 0x317, 0xf16, 0x2d1, 
	0x5a9, 0xe4e, 0xfa8, 0x63f, 0x149, 0xeba, 0xaca, 0xb4f, 
	0x7f0, 0xc59, 0xcf0, 0xce2, 0x1da, 0xb7b, 0xb00, 0x4a4, 
	0x9d3, 0x54c, 0xe11, 0x73b, 0x373, 0x1b5, 0xf08, 0xdbe, 
	0x9a0, 0xc8d, 0x91a, 0xa5f, 0xd0f, 0xf91, 0xe5e, 0xc84, 
	0x18c, 0x86c, 0xbcb, 0x5fa, 0x88e, 0xc1d, 0x848, 0xdbc, 
	0xb9e, 0xa3d, 0xde8, 0xa79, 0x8e0, 0x056, 0x632, 0x298, 
	0x3e8, 0x65a, 0xe0c, 0x5b5, 0x49e, 0x21b, 0xf0f, 0x8f8, 
	0xaf2, 0x33d, 0x72e, 0xe05, 0x11c, 0xc1a, 0xee1, 0x70b, 
	0x5f5, 0x07d, 0x79b, 0xf96, 0x8df, 0x422, 0x612, 0x50c, 
	0x15c, 0xe9f, 0xd3e, 0x648, 0xf6f, 0xa8d, 0x9e7, 0xe33, 
	0x03b, 0x8af, 0x110, 0xfb6, 0xff3, 0x9ac, 0x9a4, 0xe98, 
	0xe71, 0x319, 0x0f0, 0xb89, 0x624, 0xcb4, 0xa1c, 0x13b, 
	0xec0, 0x705, 0xdf8, 0xa03, 0xe02, 0xe5a, 0xb73, 0x8e8, 
	0xdc5, 0xe9e, 0x9ef, 0x0d5, 0xea8, 0xf1e, 0xbb0, 0x801, 
	0xcd1, 0x8ca, 0x9a1, 0x148, 0x8d4, 0xf56, 0xb81, 0xeb4, 
	0xae5, 0xba7, 0x1c9, 0x4e9, 0xc91, 0xbf7, 0xfe9, 0xf3b, 
	0x0b3, 0x9b1, 0x706, 0x7b1, 0xfd8, 0x8da, 0xc65, 0xbfc, 
	0x221, 0x945, 0xee2, 0xd72, 0x861, 0x104, 0xa0b, 0x575, 
	0x893, 0x77c, 0x884, 0x469, 0x55a, 0x140, 0x529, 0x5fb, 
	0xaf4, 0x8be, 0x6fa, 0xaab, 0xb43, 0x863, 0x81a, 0x902, 
	0x3d3, 0xa31, 0x5b8, 0xff7, 0xf54, 0xd7e, 0xdf6, 0x60c, 
	0x984, 0xdfd, 0x58c, 0xda6, 0xfac, 0x85c, 0x450, 0x78f, 
	0xadb, 0x66c, 0xaae, 0x89f, 0xa97, 0x67e, 0xc9d, 0x5f6, 
	0x781, 0x6ae, 0x8e1, 0x928, 0x4a1, 0x54b, 0x18d, 0xa70, 
	0x7d1, 0x178, 0xd3d, 0xe1a, 0x641, 0x5e8, 0x911, 0x40e, 
	0xd65, 0x5a7, 0x043, 0x703, 0x244, 0xdc6, 0xcb2, 0xd70, 
	0xb15, 0x177, 0x803, 0x97f, 0xefd, 0x105, 0x337, 0x248, 
	0xcbb, 0x0a3, 0x3a2, 0x826, 0x7b7, 0x00d, 0xd32, 0xb66, 
	0x47e, 0x4c9, 0x79f, 0xf45, 0x0ee, 0xb09, 0xba6, 0xf76, 
	0x0ba, 0xde7, 0x9e8, 0x31b, 0x7f8, 0xee9, 0x34a, 0xe2e, 
	0x6d5, 0x13f, 0x1c5, 0xb9b, 0x1d9, 0x8ba, 0xccd, 0x083, 
	0x8ec, 0x44a, 0xae4, 0xcad, 0x9aa, 0x869, 0x3c6, 0x567
};